package com.hsnn.medstgmini.pro.project.service;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.ParseException;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.web.multipart.MultipartFile;

import com.hsnn.medstgmini.base.std.model.HospInfo;
import com.hsnn.medstgmini.pro.base.model.form.FileUploadResult;
import com.hsnn.medstgmini.pro.project.model.BidProjCompany;
import com.hsnn.medstgmini.pro.project.model.BidProjdrugs;
import com.hsnn.medstgmini.pro.project.model.BidProject;
import com.hsnn.medstgmini.pro.project.model.BidProjectDetails;
import com.hsnn.medstgmini.pro.project.model.BidProjhospital;
import com.hsnn.medstgmini.pro.project.model.BidPubSettings;
import com.hsnn.medstgmini.pro.project.model.form.BidProjectDetailLogForm;
import com.hsnn.medstgmini.pro.project.model.form.BidProjectForm;
import com.hsnn.medstgmini.pro.project.model.form.BidPurProjDrugsForm;
import com.hsnn.medstgmini.util.Pagination;

public interface BidProjectManager {
	/**
	 * @category 根据项目编号查询项目信息
	 * @author 韩守松
	 * @date 2015年7月13日
	 * @param @return
	 */
	public List<BidProject> getProjectListByProjectCode(BidProject bidProject);

	/**
	 * @category 根据项目名称查询项目信息
	 * @author 韩守松
	 * @date 2015年7月13日
	 * @param @return
	 */
	public List<BidProject> getProjectListByProjectName(BidProject bidProject);

	public Pagination getDataList(Pagination page);
	public Pagination getPurDataList(Pagination page);

	public Pagination getProjWithPlanList(Pagination page);

	public Pagination getAddHospDataList(Pagination page);

	public String addHost(String projId, String hospCode, String userId);
	public void batchAddPurHosp(List<BidProjhospital> list);
	String getProjRangeById(String projId);
	void saveOrUpdateBidProject(BidProject bidProject);
	void loadToProjInfo(BidProject bidProject); 
	/**
	 * 
		 * 
		 *@category 
		 *@author 邱磊
		 *@date 2015年11月10日 上午11:50:48
		 *@param 
		 *@return void
	 */
	public void bathImport(String fileId) throws FileNotFoundException;
	/**
	 * Excel导入药品文件上传
	 * @param drugFile
	 * @param user
	 * @return
	 */
	public FileUploadResult uploadFile(MultipartFile drugFile,Pagination page);

	/**
	 * @category 采购项目新增、修改
	 * @author 张俊
	 * @date 2015-06-1
	 * @param bidProject
	 *            ：采购项目
	 * @return
	 */
	BidProject getBidProjectById(String projId);

	void saveOrUpdate(BidProjectForm form);

	/**
	 * 
	 * @category 启用停用（批量）
	 * @author 邱磊
	 * @date 2015年8月18日 上午11:57:17
	 * @param list
	 * @param userId
	 */
	public void batchSwitchStatus(List<BidProject> list, String userId);

	/**
	 * 
	 * @category 获取项目详情
	 * @author 邱磊
	 * @date 2015年8月18日 下午1:34:15
	 * @param projId
	 * @return
	 * @throws IOException 
	 */
	public Map<String, Object> getDataDetail(String projId);

	/**
	 * 
	 * @category 获取项目设置时间段详情
	 * @author 邱磊
	 * @date 2015年8月18日 下午1:34:15
	 * @param projId
	 * @return
	 * @throws IOException 
	 */
	public List<BidProjectForm> getSettimeDataDetail(String projId) throws IOException;

	
	/**
	 * 
	 * @category 批量添加医疗机构
	 * @author 邱磊
	 * @date 2015年8月18日 下午3:26:34
	 * @param page
	 */
	public void batchAddHosp(Pagination page);

	/**
	 * @category 项目未添加药品数据列表
	 * @author 韩守松
	 * @date 2015年7月8日
	 * @param @param page
	 * @param @return
	 */
	public Pagination getUnBidProjectDrugList(Pagination page);

	/**
	 * 
	 * @category 已添加药品分页查询列表
	 * @author 言科
	 * @date 2015年6月13日 Pagination
	 */
	public Pagination getAddedBidProjectDrugList(Pagination page);

	void batchSubmitDrugTOProj(List<BidPurProjDrugsForm> drugList, String userId);

	/**
	 * @category 项目未添加配送企业数据查询
	 * @author 韩守松
	 * @date 2015年7月9日
	 * @param @param page
	 * @param @return
	 */
	public Pagination getUnBidProjectCompList(Pagination page);

	/**
	 * 给项目添加配送企业
	 */
	void batchSubmitCompTOProj(List<BidProjCompany> drugList);

	/**
	 * @category 项目已添加配送企业数据查询
	 * @author 韩守松
	 * @date 2015年7月9日
	 * @param @param page
	 * @param @return
	 */
	public Pagination getAddedBidProjectCompsList(Pagination page);

	/**
	 * @category 项目已添加配送企业启用停用
	 * @author 韩守松
	 * @date 2015年7月9日
	 * @param @param bidProjCompany
	 * @param @param status
	 * @param @return
	 */
	public boolean updateCompStatus(BidProjCompany bidProjCompany,
			Integer status);

	/**
	 * @category 项目已添加配送企业批量启用停用
	 * @author 韩守松
	 * @date 2015年7月9日
	 * @param @param bidProjCompany
	 * @param @param status
	 * @param @return
	 */
	public boolean batchUpdateCompStatus(BidProjCompany bidProjCompany,
			Integer status);

	/**
	 * @category 项目已添加药品启用停用
	 * @author 韩守松
	 * @date 2015年7月8日
	 * @param @return
	 */
	boolean updateStatus(BidProjdrugs bidProjdrugs, Short status);

	/**
	 * @category 项目已添加药品批量启用停用
	 * @author 韩守松
	 * @date 2015年7月8日
	 * @param @return
	 */
	boolean batchUpdateStatus(BidProjdrugs bidProjdrugs, Short status);

	public void switchStatus(BidProject data);
	public void switchPurStatus(BidProject data);
	public Pagination getHospList(Pagination page);

	/**
	 * 
	 * @category 获取已添加的医疗机构数据
	 * @author 邱磊
	 * @date 2015年8月18日 下午4:08:51
	 * @param page
	 * @return
	 */
	public Pagination getHaveAddHospsList(Pagination page);

	/**
	 * 
	 * @category 已添加医疗机构停用启用
	 * @author 邱磊
	 * @date 2015年8月18日 下午5:00:50
	 * @param list
	 * @param userId
	 * @return
	 */
	public void batchSwitchHospStatus(List<BidProjhospital> list, String userId);

	/**
	 * 
	 * @category 获取添加药品数据
	 * @author 邱磊
	 * @date 2015年8月19日 上午9:31:56
	 * @param page
	 * @return
	 */
	public Pagination getAddDrugDataList(Pagination page);

	/**
	 * @category 项目已添加医疗机构批量启用停用
	 * @author 韩守松
	 * @date 2015年7月8日
	 * @param @return
	 */
	boolean batchUpdateHospStatus(BidProjhospital bidProjhospital, Short status);

	void batchSubmitHospTOProj(List<BidProjhospital> hospList);

	/**
	 * 
	 * @category 查询所有已启用的采购项目列表
	 * @author 张俊
	 * @date 2015年6月13日
	 * @param Pagination
	 * @param bidProject
	 * @return
	 */
	List<BidProject> getBidProjectList(Pagination page, BidProject bidProject);

	/**
	 * 
	 * @category 获取有效的采购项目列表
	 * @author 陈镜宇
	 * @date 2015年6月15日
	 * @return
	 */
	List<BidProject> getBidProjectListByCompId(String compId, String compType);

	/**
	 * @category 获取采购项目下拉框
	 * @author 韩守松
	 * @date 2015年6月16日
	 * @param @param page
	 * @param @param bidProject
	 * @param @return
	 */
	List<BidProject> getBidProjectSelectList(Pagination page,BidProject bidProject);

	/**
	 * 
	 * @category 获取采购项目日志详情
	 * @author 邱磊
	 * @date 2015年8月19日 下午2:16:21
	 * @param projId
	 * @param updDatetime
	 * @return
	 */
	public BidProjectDetailLogForm getDetailLog(String projId,
			String updDatetime);

	public BidProjectForm getPasswordInfo(String projId);

	/**
	 * 
	 * @category 设置密码
	 * @author 邱磊
	 * @date 2015年8月21日 上午9:10:05
	 * @param page
	 * @return
	 */
	public Pagination setPassword(Pagination page);

	/**
	 * 
	 * @category 设置项目招标各阶段时间
	 * @author 邱磊
	 * @date 2015年8月21日 下午3:03:13
	 * @param form
	 * @throws IOException 
	 */
	public Pagination setProjTime(BidProjectForm form,HttpServletRequest request) throws IOException;

	/**
	 * 
	 * @category 获取药物目录列表数据
	 * @author 邱磊
	 * @date 2015年8月24日 下午3:21:29
	 * @param page
	 * @return
	 */
	public Pagination getImportDrugByCatalogDataList(Pagination page);

	/**
	 * 
	 * @category 按目录全部导入（已经存在的不忽略）
	 * @author 邱磊
	 * @date 2015年8月24日 下午4:11:11
	 * @param page
	 */
	public void importDrugByCatalog(Pagination page);

	/**
	 * 
	 * @category 获取按药物目录逐条导入数据列表（排除已加入的）
	 * @author 邱磊
	 * @date 2015年8月25日 上午10:36:53
	 * @return
	 */
	public Pagination getDrugByCatalogDataList(Pagination page);

	/**
	 * 
	 * @category 逐条导入药物目录药品
	 * @author 邱磊
	 * @date 2015年8月25日 下午1:35:15
	 * @param page
	 */
	public void importDrugByCatalogDetail(Pagination page);

	/**
	 * 
	 * @category 按品规导入药品
	 * @author 邱磊
	 * @date 2015年8月25日 下午1:35:15
	 * @param page
	 */
	public void importDrugqualityspec(Pagination page);

	/**
	 * 
	 * @category 获取按品规导入列表
	 * @author 邱磊
	 * @date 2015年8月25日 下午2:20:13
	 * @param page
	 * @return
	 */
	public Pagination getDrugqualityspecDataList(Pagination page);

	/**
	 * 
	 * @category 获取已添加药品数据
	 * @author 邱磊
	 * @date 2015年8月25日 下午4:37:19
	 * @param page
	 * @return
	 */
	public Pagination getHaveAddDrugDataList(Pagination page);

	/**
	 * 
	 * @category 启用停用已添加的药品（批量）
	 * @author 邱磊
	 * @date 2015年8月25日 下午6:44:16
	 * @param page
	 */
	public void batchSwitchDrugStatus(Pagination page);

	/**
	 * 
	 * @category 关闭当前正在进行的阶断
	 * @author 邱磊
	 * @date 2015年8月25日 下午8:21:54
	 * @param point
	 */
	public void closePoint(String point, String projId);

	/**
	 * 
	 * @category 开启下一个节点
	 * @author 邱磊
	 * @date 2015年8月25日 下午8:21:54
	 * @param point
	 */
	public void openPoint(String point, String projId);

	/**
	 * 
	 * @category 获取项目中已申报资质的企业列表
	 * @author 邱磊
	 * @date 2015年8月27日 上午9:12:42
	 * @param page
	 * @return
	 */
	public Pagination getCompprofileCompDataList(Pagination page);

	/**
	 * 
	 * @category 获取企业资质详情
	 * @author 邱磊
	 * @date 2015年8月27日 上午10:31:26
	 * @param projId
	 * @param compId
	 * @return
	 */
	public Pagination getCompprofileDetail(Pagination page);

	/**
	 * 
	 * @category 审核企业资质
	 * @author 邱磊
	 * @date 2015年8月27日 下午4:28:36
	 * @param page
	 */
	public void auditCompprofile(Pagination page);

	/**
	 * 
	 * @category 澄清审核企业资质
	 * @author 邱磊
	 * @date 2015年8月27日 下午4:28:36
	 * @param page
	 */
	public void auditCompprofileAudit(Pagination page);

	/**
	 * 
	 * @category 获取申报药品的生产企业列表数据
	 * @author 邱磊
	 * @date 2015年8月28日 上午9:47:29
	 * @return
	 */
	public Pagination getDeclareDrugByCompDataList(Pagination page);

	/**
	 * 
	 * @category 获取企业申报的项品列表数据
	 * @author 邱磊
	 * @date 2015年8月28日 上午10:26:54
	 * @return
	 */
	public Pagination getCompDeclareDrugList(Pagination page);

	/**
	 * 
	 * @category 获取药品资质详情
	 * @author 邱磊
	 * @date 2015年8月28日 下午1:58:27
	 * @param page
	 * @return
	 */
	public Pagination getDrugCompprofileDetail(Pagination page);

	/**
	 * 
	 * @category 审核药品资质
	 * @author 邱磊
	 * @date 2015年8月28日 下午2:40:58
	 * @param page
	 */
	public void auditDrugCompprofile(Pagination page);

	/**
	 * 
	 * @category 审核药品资质澄清
	 * @author 邱磊
	 * @date 2015年8月28日 下午2:40:58
	 * @param page
	 */
	public void auditComplianDrugCompprofile(Pagination page);

	/**
	 * 
	 * @category 获取按药品审核药品资质列表数据
	 * @author 邱磊
	 * @date 2015年8月29日 下午2:13:29
	 * @return
	 */
	public Pagination getAuditDrugCompprofileByDrugList(Pagination page);

	/**
	 * 
	 * @category 审核申报药品
	 * @author 邱磊
	 * @date 2015年8月31日 上午11:37:09
	 * @param page
	 */
	public void auditDrug(Pagination page);

	/**
	 * 
	 * @category 澄清审核申报药品
	 * @author 邱磊
	 * @date 2015年8月31日 上午11:37:09
	 * @param page
	 */
	public void auditComplainDrug(Pagination page);

	/**
	 * 
	 * @category 获取公示详情
	 * @author 邱磊
	 * @date 2015年8月31日 下午5:34:11
	 * @return
	 */
	public List<Map<String, Object>> getPubSettingDetail(String projId);

	/**
	 * 
	 * @category 新增设置
	 * @author 邱磊
	 * @date 2015年8月31日 下午6:37:24
	 * @param page
	 */
	public void addSetting(BidPubSettings form);

	public List<Map<String, Object>> getViewInfo(String sql);

	/**
	 * 
	 * @category 获取项目下拉列表
	 * @author 邱磊
	 * @date 2015年9月2日 上午10:15:44
	 * @return
	 */
	public List<Map<String, Object>> getProjList();

	/**
	 * 
	 * @category 获取生产企业已申报的药品
	 * @author 邱磊
	 * @date 2015年9月2日 下午1:58:30
	 * @param page
	 * @return
	 */
	public Pagination getDeclareDrugDataList(Pagination page);

	/**
	 * 
	 * @category 获取已申报药品资质的药品
	 * @author 邱磊
	 * @date 2015年9月2日 下午4:04:53
	 * @return
	 */
	public Pagination getDrugCompprofileList(Pagination page);

	/**
	 * 
	 * @category 获取报名的生产企业列表
	 * @author 邱磊
	 * @date 2015年9月7日 上午10:55:38
	 * @return
	 */
	public Pagination getJoinProCompDataList(Pagination page);

	/**
	 * 
	 * @category 获取中标药品数据列表
	 * @author 邱磊
	 * @date 2015年9月7日 下午1:50:50
	 * @return
	 */
	public Pagination getBindDrugsDataList(Pagination page);

	/**
	 * @category 获取投标药品数
	 * @author 应晓川
	 * @date 2015年9月14日20:00:46
	 * @return
	 */
	Pagination getProjDrugList(Pagination page);

	/**
	 * @category 查询不重复的项目
	 * @author 韩守松
	 * @date 2015年9月15日
	 * @param @param page
	 * @param @return
	 */
	Pagination getDataProjList(Pagination page);
	
	/**
	 *@category 获取项目切换数据
	 *@author 应晓川
	 *@date 2015年9月15日10:42:53
	 *@return
	 */
	 Pagination getChangeBidProjectList(Pagination page);
	 
	 Map<String, String> getDrugCountById(String id);
	 
	/**
	 * @category 获取项目已添加的数量和即将添加的数量
	 * @author 应晓川
	 * @date   2015年9月29日10:50:18
	 * @param  @return
	 */
	 Pagination getDrugCount(Pagination page);
	 
	 
	 List<Object> getSelectProjList();
	 
	 /**
	  * @category 根据项目id查询项目信息及项目招标时间
	  * @author 韩守松
	  * @date   2015年11月5日
	  * @param  @param projId
	  * @param  @return
	 * @throws ParseException 
	  */
	 BidProject getBidProjectAndTimeById(String projId) throws ParseException;

	Pagination getChildHospProjectList(Pagination page);

	Pagination getChildHospDrugList(Pagination page);

	Pagination getChildHospList(Pagination page);
	public Pagination getImportFileDataList(Pagination page);
	/**
	 * 
	 *@category 获取预览列表
	 *@author 邱磊
	 *@date 2015年11月12日 上午8:32:59
	 *@param
	 */
	public Pagination getImportDrugView(Pagination page);
	public int importDrug(String fileId);
	public void deleteImportDrug(String fileId);

	
	
	
	/**
	 * @category 获取项目已添加医疗机构
	 * @author 韩守松
	 * @date   2015年7月9日
	 * @param  @param page
	 * @param  @return
	 */
	public Pagination getAddedBidProjectHospList(Pagination page);
	
	/**
	 * @category 项目已添加医疗机构启用停用
	 * @author 韩守松
	 * @date   2015年7月8日
	 * @param  @return
	 */
	boolean updateHospStatus(BidProjhospital bidProjhospital,Short status);
	
	public Map<String, Object> getProjInfoById(String projId);
	/**
	 * 
		 * 
		 *@category 根据项目ID与品规Id查询采购项目药品
		 *@author 邱磊
		 *@date 2015年11月11日 上午11:13:29
		 *@param 
		 *@return List<?>
	 */
	public List<?> getPorjDrug(String projId,String drugCode);
	
	public List<Map<String, Object>> getProjByName(String projName);
	public BidProjectDetails getProjDetail(String projId);
	public Pagination checkReImport(Pagination page);
}
